package com.xs.sort;

/**
 * @author xs
 * date 2018/8/16 10:49
 */
public class SelectionSort implements Sort<Integer> {

//
//	 初始序列：     	   {49 27 65 97 76 12 38}
//　　第1趟：12与49交换：12{27 65 97 76 49 38}
//　　第2趟：27不动  　：12 27{65 97 76 49 38}
//　　第3趟：65与38交换：12 27 38{97 76 49 65}
//　　第4趟：97与49交换：12 27 38 49{76 97 65}
//　　第5趟：76与65交换：12 27 38 49 65{97 76}
//　　第6趟：97与76交换：12 27 38 49 65 76 97 完成


	public void sortData(Integer[] a) {
		if (a == null || a.length == 0) {
			throw new IllegalArgumentException("源数据不能为空");
		}

		int minIndex;
		int temp;
		for (int i = 0; i < a.length - 1; i++) {
			minIndex = i; //无序区最小数据数组下标
			for (int j = i + 1; j < a.length; j++) {
				if (a[j] < a[minIndex]) {
					minIndex = j;
				}
			}
			//将最小元素放到本次循环的前端
			temp = a[i];
			a[i] = a[minIndex];
			a[minIndex] = temp;
		}
	}


	public void sortData2(Integer[] a) {
		//无序区最小元素下标
		int minIndex;
		int temp;
		for (int i = 0; i < a.length - 1; i++) {
			minIndex=i;
			for (int j = i+1; j < a.length; j++) {
				if(a[minIndex]>a[j]){
					minIndex=j;
				}
			}
			temp=a[i];
			a[i]=a[minIndex];
			a[minIndex]=temp;
		}
	}
}
